์ž‘์„ฑ: 2026-03-04 04:03:38์ˆ˜์ •: 2026-03-04 04:03:38

์˜ฌ๋ฐ”๋ฅธ ๋กœ๊น… ์ „๋žต: SLF4J์™€ Logback์œผ๋กœ ์šด์˜ ํ™˜๊ฒฝ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๊ธฐ

System.out.println()์€ ๊ฐœ๋ฐœ ๋‹จ๊ณ„์—์„œ ํŽธ๋ฆฌํ•˜์ง€๋งŒ, ์‹ค์ œ ์„œ๋น„์Šค ์šด์˜ ํ™˜๊ฒฝ์—์„œ๋Š” ์ ˆ๋Œ€ ์‚ฌ์šฉํ•ด์„œ๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค. **๋กœ๊น…(Logging)**์€ ์„œ๋ฒ„์˜ ์ƒํƒœ๋ฅผ ๊ธฐ๋กํ•˜๊ณ  ์žฅ์•  ๋ฐœ์ƒ ์‹œ ์›์ธ์„ ํŒŒ์•…ํ•˜๋Š” ๊ฐ€์žฅ ๊ฐ•๋ ฅํ•œ ๋ฌด๊ธฐ์ž…๋‹ˆ๋‹ค.


1. ์™œ ๋กœ๊น… ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์จ์•ผ ํ• ๊นŒ?

  1. ์„ฑ๋Šฅ: ๋กœ๊ทธ ์ถœ๋ ฅ ์—ฌ๋ถ€๋ฅผ ์ œ์–ดํ•  ์ˆ˜ ์žˆ์–ด ์„ฑ๋Šฅ ์ €ํ•˜๋ฅผ ๋ฐฉ์ง€ํ•ฉ๋‹ˆ๋‹ค.
  2. ํŒŒ์ผ ๊ด€๋ฆฌ: ๋กœ๊ทธ๋ฅผ ํŒŒ์ผ๋กœ ์ €์žฅํ•˜๊ณ , ๋‚ ์งœ๋‚˜ ์šฉ๋Ÿ‰๋ณ„๋กœ ์ž๋™์œผ๋กœ ๊ด€๋ฆฌ(Rolling)ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  3. ๋‹ค์–‘ํ•œ ๋ ˆ๋ฒจ: ๋กœ๊ทธ์˜ ์ค‘์š”๋„์— ๋”ฐ๋ผ ์ถœ๋ ฅ์„ ์กฐ์ ˆํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

2. ๋กœ๊ทธ ๋ ˆ๋ฒจ (Log Levels)

์Šคํ”„๋ง ๋ถ€ํŠธ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ๋‹ค์Œ 5๊ฐ€์ง€ ๋ ˆ๋ฒจ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. (์˜ค๋ฅธ์ชฝ์œผ๋กœ ๊ฐˆ์ˆ˜๋ก ์ค‘์š”๋„๊ฐ€ ๋†’์Œ) TRACE < DEBUG < INFO < WARN < ERROR

  • INFO: ์‹œ์Šคํ…œ ์šด์˜์ƒ์˜ ์ผ๋ฐ˜์ ์ธ ์ •๋ณด (๊ธฐ๋ณธ๊ฐ’).
  • WARN: ์ž ์žฌ์ ์ธ ์œ„ํ—˜ ์ƒํ™ฉ. ๋‹น์žฅ ๋ฌธ์ œ๋Š” ์—†์ง€๋งŒ ์ฃผ์˜ ๊นŠ๊ฒŒ ๋ด์•ผ ํ•  ๋•Œ.
  • ERROR: ์‹ฌ๊ฐํ•œ ๋ฌธ์ œ ๋ฐœ์ƒ. ์ฆ‰๊ฐ์ ์ธ ์กฐ์น˜๊ฐ€ ํ•„์š”ํ•œ ์ƒํƒœ.
  • DEBUG: ๊ฐœ๋ฐœ ๋‹จ๊ณ„์—์„œ ์ƒ์„ธํ•œ ์ •๋ณด๋ฅผ ํ™•์ธํ•˜๊ณ  ์‹ถ์„ ๋•Œ.

3. ์‹ค๋ฌด ๋กœ๊น… ์„ค์ • (logback-spring.xml)

๋กœ๊ทธ์˜ ์ถœ๋ ฅ ํ˜•์‹์„ ์ง€์ •ํ•˜๊ณ , ๋งค์ผ๋งค์ผ ๋กœ๊ทธ ํŒŒ์ผ์„ ์ƒˆ๋กœ ์ƒ์„ฑํ•˜๋„๋ก ์„ค์ •ํ•˜๋Š” ์˜ˆ์‹œ์ž…๋‹ˆ๋‹ค.

<configuration>
    <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>logs/app.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>logs/app.%d{yyyy-MM-dd}.log</fileNamePattern>
            <maxHistory>30</maxHistory> <!-- 30์ผ๊ฐ„ ๋ณด๊ด€ -->
        </rollingPolicy>
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n</pattern>
        </encoder>
    </appender>
 
    <root level="INFO">
        <appender-ref ref="FILE" />
    </root>
</configuration>

4. ์˜ฌ๋ฐ”๋ฅธ ๋กœ๊ทธ ์ž‘์„ฑ ์Šต๊ด€

  1. ์˜๋ฏธ ์žˆ๋Š” ์ •๋ณด ๊ธฐ๋ก: "์—๋Ÿฌ ๋ฐœ์ƒ" ๋Œ€์‹  "User ID [123] ๊ฒฐ์ œ ์‹คํŒจ: ์ž”์•ก ๋ถ€์กฑ"์ฒ˜๋Ÿผ ๊ตฌ์ฒด์ ์œผ๋กœ ์ ์œผ์„ธ์š”.
  2. ๋ฐ์ดํ„ฐ ์•”ํ˜ธํ™”: ๊ฐœ์ธ์ •๋ณด(๋น„๋ฐ€๋ฒˆํ˜ธ, ์นด๋“œ๋ฒˆํ˜ธ ๋“ฑ)๋Š” ์ ˆ๋Œ€๋กœ ๋กœ๊ทธ์— ๋‚จ๊ธฐ์ง€ ๋งˆ์„ธ์š”.
  3. ์ ์ ˆํ•œ ๋ ˆ๋ฒจ ์„ ํƒ: ๋ฃจํ”„ ์•ˆ์˜ ์žฆ์€ ์ถœ๋ ฅ์€ DEBUG, ์ค‘์š”ํ•œ ๋น„์ฆˆ๋‹ˆ์Šค ํ๋ฆ„์€ INFO๋ฅผ ์‚ฌ์šฉํ•˜์„ธ์š”.
  4. ์˜ˆ์™ธ ์Šคํƒ ํŠธ๋ ˆ์ด์Šค: log.error("์—๋Ÿฌ ๋ฐœ์ƒ", e); ์ฒ˜๋Ÿผ ์˜ˆ์™ธ ๊ฐ์ฒด๋ฅผ ํ•จ๊ป˜ ๋„˜๊ฒจ ์Šคํƒ ์ •๋ณด๋ฅผ ๋‚จ๊ธฐ์„ธ์š”.

5. ๊ฒฐ๋ก 

๋กœ๊ทธ๋Š” **"๋ฏธ๋ž˜์˜ ๋‚˜๋ฅผ ์œ„ํ•œ ๋ฉ”์‹œ์ง€"**์ž…๋‹ˆ๋‹ค. ์„œ๋น„์Šค์— ๋ฌธ์ œ๊ฐ€ ์ƒ๊ฒผ์„ ๋•Œ, ๊ณผ๊ฑฐ์— ๋‚ด๊ฐ€ ์ •์„ฑ๊ป ๋‚จ๊ธด ๋กœ๊ทธ๊ฐ€ ๊ฐ€์žฅ ๋จผ์ € ๊ธธ์„ ์•ˆ๋‚ดํ•ด ์ค„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.